Voice over Internet Protocol (VoIP) has seen a rise in popularity in recent times and has become more than just a telephony application. For instance, several highly popular applications have come into existence like Skype™, Google Talk™, and MSN Messenger™. All of these applications combine voice, instant messaging (IM), and other modes of communication into unified clients and greatly enhance the user experience. Previously, these means to communicate were islands—largely isolated from each other. However, engineers visited them and found large areas of community between these different modes of communication, resulting in integrated clients that have changed the way in which communication and business is conducted.
For integrated communication applications, such as those described above, server support needs to be provided. An examination of the structure of such applications indicates that there are two parts to the application: the signaling part and the media part. The signaling part is an event-oriented activity. Network endpoints exchange one-way messages through various servers and signal the establishment of a session. Interesting services can be built by placing fragments of code, or “event handlers,” in the signaling path at the server. Furthermore, service providers may speed up their innovation processes and quickly launch new services if they use a standards-based component model and container architecture.
One standards-based application execution framework is JAIN SLEE or JSLEE. JAIN is an acronym for “Java APIs for Intelligent Networks.” JAIN aims for an enabling set of Java APIs to develop and deploy service-driven network applications. SLEE is an acronym for “service logic execution environment.” Together, JAIN SLEE is an application execution framework analogous to the Java™ Enterprise Edition (J2EE) environment. However, in comparison to J2EE, JSLEE's design principles explicitly aim for a low latency (<100 ms) and high throughput (thousands of events per second) environment optimized for asynchronous event processing, including transaction handling, high reliability, a distributed component model, and a standardized framework. Appropriately, JSLEE was designed for a network signaling environment, which is ideal for a communications platform.
JSLEE addresses unique requirements for performance and availability in communications applications that are not addressed by the execution environment of J2EE. One present issue with JSLEE is that, although it can interface with other application servers, this interfacing does not provide the same level of availability, performance, security and scalability as the J2EE environment does. As a result, a way to integrate the robust component model and scalability characteristics designed for high-volume, low-latency signaling of JSLEE with the established and well-known modular architecture of J2EE in a single Java™ virtual machine would be beneficial.